下面介绍的函数都是Sheriffed大学遗传算法工具包内的常用函数
- 复制矩阵
B=rep(A,RepN)
A表示要被复制的矩阵,RepN包含每个方向的复制次数,RepN(1)代表纵向复制次数,RepN(2)代表横向复制次数
比如
A=[1,2;3,4];
B=rep(A,[1,2])
B=[1,2,1,2
3,4,3,4]
如果是
B=rep(A,[2,1])
B=[1,2
3,4
1,2
3,4]
=-= 教材里介绍了这个,但之后没有用到哎……
- 创造种群
Chrom=crtbp(n,b)
n代表染色体个数,b代表二进制数的位数(可以理解为基因数)
- 二进制转十进制数
bs2rv(Chrom,Field)
Field是个矩阵,有如下参数
Field=[b;lowerbound;upperbound;code;scale;lbin;ubin]
各个参数的意义如下:
b代表二进制数串的长度,后面那俩表示原来十进制数的上下界
code代表编码方式,1表示二进制编码
scale表示每个串的刻度,0代表算数刻度,1代表对数刻度
lbin和ubin表示参数的取值是否包括边界,0表示不包括,1表示包括
bs2rv(Chrom,Field)返回的是个列向量,其中每行就是原来Chrom里每行对应的十进制数
- 计算适应度值
FitnV=ranking(ObjV)
ObjV是定义好的目标函数
老实讲,我没搞懂它这个ranking的返回值是什么意思。但就把它当做可以计算出各个染色体的适应值,并表明他们被传递到下一代的概率为多少的函数吧
就是执行算出我笔记中那张表的函数?
这里需要强调一点。ranking默认的是求最小,如果你要求的问题是最大,那就写成ranking(-ObjV)
+ 根据适应度值通过选择来得到新种群
SelCh=select(SEL_F,Chrom,FitnV,GGAP)
SEL_FeL_是个字符串,表明调用的选择函数,可以用rws(轮盘选择)或者sus(随机遍历采样)
GGAP代表这一代传到下一代的概率,就是新种群中的个体数为现在的几分之几
=-= 既然咱看的教程是拿rws讲的